package com.jiazhong.内部类.成员内部类;
//实质：成员变量（全局变量）
/**
 * 成员内部类
 * 说明：成员内部类是定义在外部类的成员位置，并且没有static修饰
 */
public class NumberInnerClass {
    public static void main(String[] args) {
        Outer08 outer08=new Outer08();
        outer08.t1();
        //外部其他类，使用成员内部类的三种形式
        //第一种：
        //outer08.new Inner08();相当于把new Inner08();当作outer08的成员
        //不需要过多纠结，就是一个语法
        Outer08.Inner08 inner08=outer08.new Inner08();
        //第二种 在外部类中编写了一个方法，可以返回Inner08的对象
        Outer08.Inner08 inner081= outer08.getInner08Instance();

    }
}
class Outer08{
    private int n1=10;
    private String name="张三";
    //可以添加任意访问修饰符（public protected 默认 private）,因为他的地位是一位成员
    public class Inner08{//成员内部类
        private double sal=99.9;
        private int n1=44;
        public void say(){
            //可以直接访问外部类的所有成员，包含私有的
            System.out.println("Outer08 的n1="+n1+"Outer 08 name="+name);
            System.out.println("n1="+n1+"name="+name+"外部类的n1="+Outer08.this.n1);

        }
    }
    //方法，返回一个Inner08实例
    public Inner08 getInner08Instance(){
        return new Inner08();
    }
    public void t1(){
        //使用成员内部类
        Inner08 inner08=new Inner08();
        inner08.say();
        System.out.println(inner08.sal);
    }
}
